﻿<?xml version="1.0" encoding="utf-8"?>
<xsd:schema id="VSCTDesignerSchema" targetNamespace="http://schemas.microsoft.com/VisualStudio/2005-10-18/CommandTable" elementFormDefault="qualified" xmlns="http://schemas.microsoft.com/VisualStudio/2005-10-18/CommandTable" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <!-- CommandTable -->
  <xsd:element name="CommandTable" type="CommandTable" />
  <xsd:complexType name="CommandTable">
    <xsd:annotation>
      <xsd:documentation>The root in which all other elements are embedded. Appears as a diagram.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Relationship: CommandTableHasExternElements -->
      <xsd:choice minOccurs="0" maxOccurs="unbounded" >
        <xsd:element ref="commandTableHasExternElements">
          <xsd:annotation>
            <xsd:documentation>[Relationship deriving from CommandTableHasExternElements needs to be serialized in full-form]</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element ref="Extern" >
          <xsd:annotation>
            <xsd:documentation>[Target role-player]</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:choice>
      <!-- Relationship: CommandTableHasIncludeElements -->
      <xsd:choice minOccurs="0" maxOccurs="unbounded" >
        <xsd:element ref="commandTableHasIncludeElements">
          <xsd:annotation>
            <xsd:documentation>[Relationship deriving from CommandTableHasIncludeElements needs to be serialized in full-form]</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element ref="Include" >
          <xsd:annotation>
            <xsd:documentation>[Target role-player]</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:choice>
      <!-- Relationship: CommandHasDefineElements -->
      <xsd:choice minOccurs="0" maxOccurs="unbounded" >
        <xsd:element ref="commandHasDefineElements">
          <xsd:annotation>
            <xsd:documentation>[Relationship deriving from CommandHasDefineElements needs to be serialized in full-form]</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element ref="Define" >
          <xsd:annotation>
            <xsd:documentation>[Target role-player]</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:choice>
      <!-- Relationship: CommandTableHasCommands -->
      <xsd:choice minOccurs="0" maxOccurs="1" >
        <xsd:element ref="commandTableHasCommands">
          <xsd:annotation>
            <xsd:documentation>[Relationship deriving from CommandTableHasCommands needs to be serialized in full-form]</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element ref="Commands" >
          <xsd:annotation>
            <xsd:documentation>[Target role-player]</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:choice>
      <!-- Relationship: CommandTableHasUsedCommands -->
      <xsd:element name="usedCommands" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instances of CommandTableHasUsedCommands</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:choice minOccurs="0" maxOccurs="unbounded" >
              <xsd:element ref="commandTableHasUsedCommands">
                <xsd:annotation>
                  <xsd:documentation>[Relationship deriving from CommandTableHasUsedCommands needs to be serialized in full-form]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element ref="usedCommand" >
                <xsd:annotation>
                  <xsd:documentation>[Target role-player]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:choice>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <!-- Relationship: CommandTableHasBitmaps -->
      <xsd:choice minOccurs="0" maxOccurs="1" >
        <xsd:element ref="commandTableHasBitmaps">
          <xsd:annotation>
            <xsd:documentation>[Relationship deriving from CommandTableHasBitmaps needs to be serialized in full-form]</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element ref="Bitmaps" >
          <xsd:annotation>
            <xsd:documentation>[Target role-player]</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:choice>
      <!-- Relationship: CommandTableHasSymbols -->
      <xsd:element name="Symbols" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instances of CommandTableHasSymbols</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:choice minOccurs="0" maxOccurs="unbounded" >
              <xsd:element ref="commandTableHasSymbols">
                <xsd:annotation>
                  <xsd:documentation>[Relationship deriving from CommandTableHasSymbols needs to be serialized in full-form]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element ref="GuidSymbol" >
                <xsd:annotation>
                  <xsd:documentation>[Target role-player]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:choice>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
    <!-- Id -->
    <xsd:attribute name="Id" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- dslVersion -->
    <xsd:attribute name="dslVersion" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>Version of the model serialized in this file.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Language -->
    <xsd:attribute name="language" type="xsd:string" />
    <!-- Property: CustomToolGenerator -->
    <xsd:attribute name="customToolGenerator" type="xsd:string" />
  </xsd:complexType>
  
  <!-- CommandTable Moniker -->
  <xsd:element name="commandTableMoniker" type="CommandTableMoniker" />
  <xsd:complexType name="CommandTableMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for CommandTable instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="Id" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- Commands -->
  <xsd:element name="Commands" type="Commands" />
  <xsd:complexType name="Commands">
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Relationship: CommandsHasMenus -->
      <xsd:element name="Menus" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instances of CommandsHasMenus</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:choice minOccurs="0" maxOccurs="unbounded" >
              <xsd:element ref="Menus">
                <xsd:annotation>
                  <xsd:documentation>[Relationship deriving from CommandsHasMenus needs to be serialized in full-form]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element ref="Menu" >
                <xsd:annotation>
                  <xsd:documentation>[Target role-player]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:choice>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <!-- Relationship: CommandsHasGroups -->
      <xsd:element name="Groups" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instances of CommandsHasGroups</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:choice minOccurs="0" maxOccurs="unbounded" >
              <xsd:element ref="Groups">
                <xsd:annotation>
                  <xsd:documentation>[Relationship deriving from CommandsHasGroups needs to be serialized in full-form]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element ref="Group" >
                <xsd:annotation>
                  <xsd:documentation>[Target role-player]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:choice>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <!-- Relationship: CommandsHasButtons -->
      <xsd:element name="Buttons" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instances of CommandsHasButtons</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:choice minOccurs="0" maxOccurs="unbounded" >
              <xsd:element ref="Buttons">
                <xsd:annotation>
                  <xsd:documentation>[Relationship deriving from CommandsHasButtons needs to be serialized in full-form]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element ref="Button" >
                <xsd:annotation>
                  <xsd:documentation>[Target role-player]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:choice>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <!-- Relationship: CommandsHasExternCommandAliases -->
      <xsd:element name="externCommandAliases" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instances of CommandsHasExternCommandAliases</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:choice minOccurs="0" maxOccurs="unbounded" >
              <xsd:element ref="commandsHasExternCommandAliases">
                <xsd:annotation>
                  <xsd:documentation>[Relationship deriving from CommandsHasExternCommandAliases needs to be serialized in full-form]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element ref="externCommand" >
                <xsd:annotation>
                  <xsd:documentation>[Target role-player]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:choice>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <!-- Relationship: CommandsHasCombos -->
      <xsd:element name="Combos" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instances of CommandsHasCombos</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:choice minOccurs="0" maxOccurs="unbounded" >
              <xsd:element ref="commandsHasCombos">
                <xsd:annotation>
                  <xsd:documentation>[Relationship deriving from CommandsHasCombos needs to be serialized in full-form]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element ref="Combo" >
                <xsd:annotation>
                  <xsd:documentation>[Target role-player]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:choice>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
    <!-- Property: Package -->
    <xsd:attribute name="package" type="xsd:string" use="required" />
  </xsd:complexType>
  
  <!-- Commands Moniker -->
  <xsd:element name="commandsMoniker" type="CommandsMoniker" />
  <xsd:complexType name="CommandsMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Commands instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="package" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- Command -->
  <xsd:element name="command" abstract="true" type="Command" substitutionGroup="conditionalElement" />
  <xsd:complexType name="Command" abstract="true" >
    <xsd:complexContent>
      <xsd:extension base="ConditionalElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Relationship: CommandHasParent -->
          <xsd:choice minOccurs="0" maxOccurs="unbounded" >
            <xsd:element ref="CommandHasParent">
              <xsd:annotation>
                <xsd:documentation>[Relationship deriving from CommandHasParent needs to be serialized in full-form]</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element ref="commandMoniker" >
              <xsd:annotation>
                <xsd:documentation>[Target role-player]</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:choice>
          <!-- Relationship: CommandHasKeyBinding -->
          <xsd:choice minOccurs="0" maxOccurs="1" >
            <xsd:element ref="commandHasKeyBinding">
              <xsd:annotation>
                <xsd:documentation>[Relationship deriving from CommandHasKeyBinding needs to be serialized in full-form]</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element ref="KeyBinding" >
              <xsd:annotation>
                <xsd:documentation>[Target role-player]</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:choice>
        </xsd:sequence>
        <!-- Property: Guid -->
        <xsd:attribute name="guid" type="xsd:string" use="required" >
          <xsd:annotation>
            <xsd:documentation>Required. GUID of the GUID/ID command identifier. </xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: ID -->
        <xsd:attribute name="id" type="xsd:string" use="required" >
          <xsd:annotation>
            <xsd:documentation>Required. ID of the GUID/ID command identifier. </xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Priority -->
        <xsd:attribute name="priority" type="xsd:integer" >
          <xsd:annotation>
            <xsd:documentation>Optional. A numeric value that specifies the priority. </xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: deprecatedLowPriority -->
        <xsd:attribute name="deprecatedLowPriority" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Command Moniker -->
  <xsd:element name="commandMoniker" abstract="true" type="CommandMoniker" substitutionGroup="conditionalElementMoniker" />
  <xsd:complexType name="CommandMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Command instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="ConditionalElementMoniker">
        <xsd:attribute name="id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Menu -->
  <xsd:element name="Menu" type="Menu" substitutionGroup="commandWithIcon" />
  <xsd:complexType name="Menu">
    <xsd:annotation>
      <xsd:documentation>Defines a single menu item. There are six kinds of menus, as follows: Context, Menu, MenuController, MenuControllerLatched, Toolbar, and ToolWindowToolbar. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="CommandWithIcon">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Property: VisibilityContext -->
          <xsd:element name="VisibilityContext" type="xsd:string" minOccurs="0" maxOccurs="1" />
          <!-- Property: CommandFlag -->
          <xsd:element name="CommandFlag" type="MenuCommandFlag" minOccurs="0" maxOccurs="1" />
        </xsd:sequence>
        <!-- Property: Type -->
        <xsd:attribute name="type" type="MenuType" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Menu Moniker -->
  <xsd:element name="ParentMenu" type="MenuMoniker" substitutionGroup="commandWithIconMoniker" />
  <xsd:complexType name="MenuMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Menu instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="CommandWithIconMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Group -->
  <xsd:element name="Group" type="Group" substitutionGroup="command" />
  <xsd:complexType name="Group">
    <xsd:annotation>
      <xsd:documentation>Defines a VSPackage command group. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Command">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Property: Dynamic -->
          <xsd:element name="GroupFlag" type="xsd:boolean" minOccurs="0" maxOccurs="1" />
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Group Moniker -->
  <xsd:element name="ParentGroup" type="GroupMoniker" substitutionGroup="commandMoniker" />
  <xsd:complexType name="GroupMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Group instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="CommandMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- StringDef -->
  <xsd:element name="Strings" type="StringDef" />
  <xsd:complexType name="StringDef">
    <xsd:annotation>
      <xsd:documentation>The Strings element must contain at least a ButtonText child element. All other child elements are optional. Invalid XML characters such as ‘&amp;’ and ‘&lt;’ must be coded as entities (‘&amp;’ and ‘&lt;’ and so on). </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Property: CommandName -->
      <xsd:element name="CommandName" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The CommandName field specifies the text that appears in the keyboard category in the Options dialog box (available by clicking Options on the Tools menu) and the Commands list in the Customize dialog box (available by clicking Customize on the Tools menu). </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <!-- Property: ButtonText -->
      <xsd:element name="ButtonText" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>This field and the five following text fields in a command definition let you specify the text that appears in various menus. By default, the ButtonText field appears in menu controllers. The ButtonText field also becomes the default if the other text fields are blank. The ButtonText field cannot be blank even if the other text fields are specified. </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <!-- Property: CanonicalName -->
      <xsd:element name="CanonicalName" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The English CanonicalName field specifies the name of the command in English text that can be entered in the Command window to execute the menu item. The IDE strips out any characters that are not letters, digits, underscores, or embedded periods. This text is then concatenated to the ButtonText field to define the command. For example, New Project on the File menu becomes the command, File.NewProject. If the English CanonicalName field is not specified, the IDE uses the ButtonText field, and strips out all except letters, digits, underscores, and embedded periods. For example, the Button Text &quot;&amp;Define Commands...&quot; becomes DefineCommands, where the ampersand, the space, and the ellipsis are removed. If the TextChanges flag is specified and the text of the command is changed, the corresponding command recognized by the Command window does not change; it remains the canonical form of the original ButtonText or English CanonicalName fields. </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <!-- Property: LocCanonicalName -->
      <xsd:element name="LocCanonicalName" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The LocCanonicalName field behaves identically to the English CanonicalName field but enables localized command text to be specified. Both canonical fields can be specified. Because the IDE just parses text entered in the Command window and associates it with a command, both English and non-English text can be associated with the same command. </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <!-- Property: MenuText -->
      <xsd:element name="MenuText" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The MenuText field specifies the text that is displayed for a command if it is on the main menu, a toolbar, in a shortcut menu, or in a submenu. If the MenuText field is blank, the integrated development environment (IDE) uses the ButtonText field. The MenuText field can also be used for localization. For shortcut menus, the MenuText field is the name that is displayed in the Shortcut Menus toolbar, which enables customization of shortcut menus in the IDE. Therefore, be specific in what you name your shortcut menu; for example, use &quot;Widget Package Shortcut Menu&quot; instead of &quot;Shortcut&quot;. If the MenuText field is not specified, the ButtonText field is used. </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <!-- Property: ToolTipText -->
      <xsd:element name="ToolTipText" type="xsd:string" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>The ToolTipText field specifies the text that appears in the tooltip for a menu item. If the ToolTipText field is blank, the ButtonText field is used. </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <!-- Property: Language -->
    <xsd:attribute name="language" type="xsd:string" />
  </xsd:complexType>
  
  <!-- StringDef Moniker -->
  <xsd:element name="stringDefMoniker" abstract="true" type="StringDefMoniker" />
  <xsd:complexType name="StringDefMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for StringDef instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- Button -->
  <xsd:element name="Button" type="Button" substitutionGroup="commandWithIcon" />
  <xsd:complexType name="Button">
    <xsd:annotation>
      <xsd:documentation>Defines an element that the user can interact with. There are four kinds of Buttons, as follows: Button, MenuButton, SplitDropDown, and Swatch. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="CommandWithIcon">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Property: VisibilityContext -->
          <xsd:element name="VisibilityContext" type="xsd:string" minOccurs="0" maxOccurs="1" />
          <!-- Property: CommandFlag -->
          <xsd:element name="CommandFlag" type="ButtonCommandFlag" minOccurs="0" maxOccurs="1" />
        </xsd:sequence>
        <!-- Property: Type -->
        <xsd:attribute name="type" type="ButtonType" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Button Moniker -->
  <xsd:element name="buttonMoniker" type="ButtonMoniker" substitutionGroup="commandWithIconMoniker" />
  <xsd:complexType name="ButtonMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Button instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="CommandWithIconMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- GuidSymbol -->
  <xsd:element name="GuidSymbol" type="GuidSymbol" />
  <xsd:complexType name="GuidSymbol">
    <xsd:annotation>
      <xsd:documentation>The GuidSymbol element contains the GUID of the GUID:ID pair that represents a menu, group, or command. The ID comes from an IDSymbol element in the GuidSymbol element. The GuidSymbol element has a name attribute that provides a friendly name for the GUID, which is contained in the value attribute. </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Relationship: GuidSymbolHasIDSymbols -->
      <xsd:choice minOccurs="0" maxOccurs="unbounded" >
        <xsd:element ref="guidSymbolHasIDSymbols">
          <xsd:annotation>
            <xsd:documentation>[Relationship deriving from GuidSymbolHasIDSymbols needs to be serialized in full-form]</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element ref="IDSymbol" >
          <xsd:annotation>
            <xsd:documentation>[Target role-player]</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:choice>
    </xsd:sequence>
    <!-- Property: Name -->
    <xsd:attribute name="name" type="xsd:string" use="required" />
    <!-- Property: Value -->
    <xsd:attribute name="value" type="xsd:string" />
  </xsd:complexType>
  
  <!-- GuidSymbol Moniker -->
  <xsd:element name="guidSymbolMoniker" type="GuidSymbolMoniker" />
  <xsd:complexType name="GuidSymbolMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for GuidSymbol instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="name" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- IDSymbol -->
  <xsd:element name="IDSymbol" type="IDSymbol" />
  <xsd:complexType name="IDSymbol">
    <xsd:annotation>
      <xsd:documentation>The IDSymbol element contains the ID of the GUID:ID pair that represents a menu, group, or command. The GUID comes from the parent GuidSymbol element. The IDSymbol element has a name attribute that provides a friendly name for the ID, which is contained in the value attribute. </xsd:documentation>
    </xsd:annotation>
    <!-- Property: Name -->
    <xsd:attribute name="name" type="xsd:string" use="required" />
    <!-- Property: Value -->
    <xsd:attribute name="value" type="xsd:string" />
  </xsd:complexType>
  
  <!-- IDSymbol Moniker -->
  <xsd:element name="iDSymbolMoniker" type="IDSymbolMoniker" />
  <xsd:complexType name="IDSymbolMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for IDSymbol instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="name" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- Bitmaps -->
  <xsd:element name="Bitmaps" type="Bitmaps" />
  <xsd:complexType name="Bitmaps">
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Relationship: BitmapsHasBitmap -->
      <xsd:choice minOccurs="0" maxOccurs="unbounded" >
        <xsd:element ref="bitmapsHasBitmap">
          <xsd:annotation>
            <xsd:documentation>[Relationship deriving from BitmapsHasBitmap needs to be serialized in full-form]</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element ref="Bitmap" >
          <xsd:annotation>
            <xsd:documentation>[Target role-player]</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:choice>
    </xsd:sequence>
    <!-- Id -->
    <xsd:attribute name="Id" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- Bitmaps Moniker -->
  <xsd:element name="bitmapsMoniker" type="BitmapsMoniker" />
  <xsd:complexType name="BitmapsMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Bitmaps instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="Id" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- Bitmap -->
  <xsd:element name="Bitmap" type="Bitmap" />
  <xsd:complexType name="Bitmap">
    <xsd:annotation>
      <xsd:documentation>Defines a bitmap. The bitmap is loaded either from a resource or from a file. </xsd:documentation>
    </xsd:annotation>
    <!-- Property: Guid -->
    <xsd:attribute name="guid" type="xsd:string" use="required" >
      <xsd:annotation>
        <xsd:documentation>Required. GUID of the GUID/ID command identifier. The guid attribute for a bitmap is not associated with any VSPackage or other command group. It should be unique to the bitmap definition and should not be used for any other purpose. </xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: resId -->
    <xsd:attribute name="resId" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>ID of the GUID/ID command identifier. Either the resID or the href attribute is required. The resID attribute is an integer resource ID that determines the bitmap strip that is to be loaded during command table merging. When the command table is being loaded, the bitmaps specified by the resource ID will be loaded from the resource of the same module. </xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: hRef -->
    <xsd:attribute name="href" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Path to the bitmap. Either the resID or the href attribute is required. The include path is searched for the indicated image file, which is embedded in the resulting binary. During the command table merge, the image is copied and no additional resource lookup or load is required. If the usedList attribute is not present, all images in the strip are available</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: usedList -->
    <xsd:attribute name="usedList" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Required if the resID attribute is present. Selects the available images in the bitmap strip. </xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- Bitmap Moniker -->
  <xsd:element name="bitmapMoniker" type="BitmapMoniker" />
  <xsd:complexType name="BitmapMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Bitmap instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="guid" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- CommandWithIcon -->
  <xsd:element name="commandWithIcon" abstract="true" type="CommandWithIcon" substitutionGroup="command" />
  <xsd:complexType name="CommandWithIcon" abstract="true" >
    <xsd:complexContent>
      <xsd:extension base="Command">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Relationship: CommandHasIcon -->
          <xsd:element name="Icon" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instance of CommandHasIcon</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element ref="commandHasIcon" minOccurs="0" maxOccurs="1">
                  <xsd:annotation>
                    <xsd:documentation>[Instance of CommandHasIcon needs to be serialized in full-form]</xsd:documentation>
                  </xsd:annotation>
                </xsd:element>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
          <!-- Relationship: CommandWithIconHasStrings -->
          <xsd:choice minOccurs="0" maxOccurs="unbounded" >
            <xsd:element ref="commandWithIconHasStrings">
              <xsd:annotation>
                <xsd:documentation>[Relationship deriving from CommandWithIconHasStrings needs to be serialized in full-form]</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element ref="Strings" >
              <xsd:annotation>
                <xsd:documentation>[Target role-player]</xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:choice>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- CommandWithIcon Moniker -->
  <xsd:element name="commandWithIconMoniker" abstract="true" type="CommandWithIconMoniker" substitutionGroup="commandMoniker" />
  <xsd:complexType name="CommandWithIconMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for CommandWithIcon instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="CommandMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ConditionalElement -->
  <xsd:element name="conditionalElement" abstract="true" type="ConditionalElement" />
  <xsd:complexType name="ConditionalElement" abstract="true" >
    <!-- Property: Condition -->
    <xsd:attribute name="Condition" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Conditional attributes may be applied to all lists and items. Logical operators and symbol expansion expressions evaluate to true or false. If true, the associated list or item is included in the resulting output. Token expansions can be tested against other token expansions or constants. The function Defined() is used to test whether a particular name has been defined, even if it has no value. When a Condition attribute is applied to a list, the condition is applied to every child element in the list. If a child element itself contains a Condition attribute, then its condition is combined with the parent expression by an AND operation. The values 1, ‘1’ and ‘true’ are evaluated as true, and 0, ‘0’ and ‘false’ are evaluated as false. </xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- ConditionalElement Moniker -->
  <xsd:element name="conditionalElementMoniker" abstract="true" type="ConditionalElementMoniker" />
  <xsd:complexType name="ConditionalElementMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for ConditionalElement instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- ExternElement -->
  <xsd:element name="Extern" type="ExternElement" substitutionGroup="conditionalElement" />
  <xsd:complexType name="ExternElement">
    <xsd:complexContent>
      <xsd:extension base="ConditionalElement">
        <!-- Property: hRef -->
        <xsd:attribute name="href" type="xsd:string" />
        <!-- Property: Language -->
        <xsd:attribute name="language" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ExternElement Moniker -->
  <xsd:element name="externElementMoniker" abstract="true" type="ExternElementMoniker" substitutionGroup="conditionalElementMoniker" />
  <xsd:complexType name="ExternElementMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for ExternElement instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="ConditionalElementMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- IncludeElement -->
  <xsd:element name="Include" type="IncludeElement" substitutionGroup="conditionalElement" />
  <xsd:complexType name="IncludeElement">
    <xsd:complexContent>
      <xsd:extension base="ConditionalElement">
        <!-- Property: hRef -->
        <xsd:attribute name="href" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- IncludeElement Moniker -->
  <xsd:element name="includeElementMoniker" abstract="true" type="IncludeElementMoniker" substitutionGroup="conditionalElementMoniker" />
  <xsd:complexType name="IncludeElementMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for IncludeElement instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="ConditionalElementMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ExternCommand -->
  <xsd:element name="externCommand" type="ExternCommand" substitutionGroup="command" />
  <xsd:complexType name="ExternCommand">
    <xsd:complexContent>
      <xsd:extension base="Command">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ExternCommand Moniker -->
  <xsd:element name="ParentExtern" type="ExternCommandMoniker" substitutionGroup="commandMoniker" />
  <xsd:complexType name="ExternCommandMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for ExternCommand instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="CommandMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- DefineElement -->
  <xsd:element name="Define" type="DefineElement" substitutionGroup="conditionalElement" />
  <xsd:complexType name="DefineElement">
    <xsd:complexContent>
      <xsd:extension base="ConditionalElement">
        <!-- Property: Name -->
        <xsd:attribute name="name" type="xsd:string" />
        <!-- Property: Value -->
        <xsd:attribute name="value" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- DefineElement Moniker -->
  <xsd:element name="defineElementMoniker" abstract="true" type="DefineElementMoniker" substitutionGroup="conditionalElementMoniker" />
  <xsd:complexType name="DefineElementMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for DefineElement instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="ConditionalElementMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- KeyBindingElement -->
  <xsd:element name="KeyBinding" type="KeyBindingElement" substitutionGroup="conditionalElement" />
  <xsd:complexType name="KeyBindingElement">
    <xsd:complexContent>
      <xsd:extension base="ConditionalElement">
        <!-- Property: Editor -->
        <xsd:attribute name="editor" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Required. The editor GUID indicates the editing context for which this keyboard shortcut will be active. </xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Key1 -->
        <xsd:attribute name="key1" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Required. Valid values include all typable alphanumerics, and also two-digit hexadecimal values preceded by 0x and VK_constants. </xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Mod1 -->
        <xsd:attribute name="mod1" type="KeyModifier" >
          <xsd:annotation>
            <xsd:documentation>Description for Optional. Any combination of CTRL, ALT, and SHIFT separated by space. </xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Key2 -->
        <xsd:attribute name="key2" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Optional. Valid values include all typable alphanumerics, and also two-digit hexadecimal values preceded by 0x and VK_constants. </xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Mod2 -->
        <xsd:attribute name="mod2" type="KeyModifier" >
          <xsd:annotation>
            <xsd:documentation>Optional. Any combination of CTRL, ALT, and SHIFT separated by space. </xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Emulator -->
        <xsd:attribute name="emulator" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Description for DSLFactory.VSCTDesigner.Commands.Emulator</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- KeyBindingElement Moniker -->
  <xsd:element name="keyBindingElementMoniker" abstract="true" type="KeyBindingElementMoniker" substitutionGroup="conditionalElementMoniker" />
  <xsd:complexType name="KeyBindingElementMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for KeyBindingElement instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="ConditionalElementMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- UsedCommandElement -->
  <xsd:element name="usedCommand" type="UsedCommandElement" />
  <xsd:complexType name="UsedCommandElement">
    <!-- Property: Guid -->
    <xsd:attribute name="guid" type="xsd:string" />
    <!-- Property: ID -->
    <xsd:attribute name="id" type="xsd:string" />
  </xsd:complexType>
  
  <!-- UsedCommandElement Moniker -->
  <xsd:element name="usedCommandElementMoniker" abstract="true" type="UsedCommandElementMoniker" />
  <xsd:complexType name="UsedCommandElementMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for UsedCommandElement instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- Combo -->
  <xsd:element name="Combo" type="Combo" substitutionGroup="commandWithIcon" />
  <xsd:complexType name="Combo">
    <xsd:annotation>
      <xsd:documentation>Defines commands that appear in a combo box. There are four kinds of combo boxes, as follows: DropDownCombo, DynamicCombo, IndexCombo, and MRUCombo. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="CommandWithIcon">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Property: CommandFlag -->
          <xsd:element name="CommandFlag" type="ComboCommandFlag" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Commandflag</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
        <!-- Property: DefaultWidth -->
        <xsd:attribute name="defaultWidth" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Required. An integer that specifies a pixel width for the combo box. </xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: IdCommandList -->
        <xsd:attribute name="idCommandList" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Required. An ID that is sent to the active commmand target to retrieve the list of items to be displayed in the combo box. The ID will be in the same GUID scope as the control. </xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Type -->
        <xsd:attribute name="type" type="ComboType" >
          <xsd:annotation>
            <xsd:documentation>Optional. An enumerated value that specifies the type of button.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Combo Moniker -->
  <xsd:element name="comboMoniker" type="ComboMoniker" substitutionGroup="commandWithIconMoniker" />
  <xsd:complexType name="ComboMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Combo instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="CommandWithIconMoniker">
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- CommandTableHasCommands -->
  <xsd:element name="commandTableHasCommands" abstract="true" type="CommandTableHasCommands" />
  <xsd:complexType name="CommandTableHasCommands" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Commands -->
      <xsd:element ref="Commands" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- CommandTableHasCommands Moniker -->
  <xsd:element name="commandTableHasCommandsMoniker" abstract="true" type="CommandTableHasCommandsMoniker" />
  <xsd:complexType name="CommandTableHasCommandsMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for CommandTableHasCommands instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- CommandsHasMenus -->
  <xsd:element name="Menus" abstract="true" type="CommandsHasMenus" />
  <xsd:complexType name="CommandsHasMenus" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Menu -->
      <xsd:element ref="Menu" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- CommandsHasMenus Moniker -->
  <xsd:element name="commandsHasMenusMoniker" abstract="true" type="CommandsHasMenusMoniker" />
  <xsd:complexType name="CommandsHasMenusMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for CommandsHasMenus instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- CommandsHasGroups -->
  <xsd:element name="Groups" abstract="true" type="CommandsHasGroups" />
  <xsd:complexType name="CommandsHasGroups" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Group -->
      <xsd:element ref="Group" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- CommandsHasGroups Moniker -->
  <xsd:element name="commandsHasGroupsMoniker" abstract="true" type="CommandsHasGroupsMoniker" />
  <xsd:complexType name="CommandsHasGroupsMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for CommandsHasGroups instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- CommandHasParent -->
  <xsd:element name="CommandHasParent" abstract="true" type="CommandHasParent" />
  <xsd:complexType name="CommandHasParent" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Command -->
      <xsd:element ref="commandMoniker" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- CommandHasParent Moniker -->
  <xsd:element name="Parent" abstract="true" type="CommandHasParentMoniker" />
  <xsd:complexType name="CommandHasParentMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for CommandHasParent instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- CommandsHasButtons -->
  <xsd:element name="Buttons" abstract="true" type="CommandsHasButtons" />
  <xsd:complexType name="CommandsHasButtons" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Button -->
      <xsd:element ref="Button" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- CommandsHasButtons Moniker -->
  <xsd:element name="commandsHasButtonsMoniker" abstract="true" type="CommandsHasButtonsMoniker" />
  <xsd:complexType name="CommandsHasButtonsMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for CommandsHasButtons instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- GuidSymbolHasIDSymbols -->
  <xsd:element name="guidSymbolHasIDSymbols" abstract="true" type="GuidSymbolHasIDSymbols" />
  <xsd:complexType name="GuidSymbolHasIDSymbols" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end IDSymbol -->
      <xsd:element ref="IDSymbol" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- GuidSymbolHasIDSymbols Moniker -->
  <xsd:element name="guidSymbolHasIDSymbolsMoniker" abstract="true" type="GuidSymbolHasIDSymbolsMoniker" />
  <xsd:complexType name="GuidSymbolHasIDSymbolsMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for GuidSymbolHasIDSymbols instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- BitmapsHasBitmap -->
  <xsd:element name="bitmapsHasBitmap" abstract="true" type="BitmapsHasBitmap" />
  <xsd:complexType name="BitmapsHasBitmap" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Bitmap -->
      <xsd:element ref="Bitmap" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- BitmapsHasBitmap Moniker -->
  <xsd:element name="bitmapsHasBitmapMoniker" abstract="true" type="BitmapsHasBitmapMoniker" />
  <xsd:complexType name="BitmapsHasBitmapMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for BitmapsHasBitmap instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- CommandHasIcon -->
  <xsd:element name="commandHasIcon" type="CommandHasIcon" />
  <xsd:complexType name="CommandHasIcon">
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Bitmap -->
      <xsd:element ref="bitmapMoniker" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <!-- Property: IconId -->
    <xsd:attribute name="iconId" type="xsd:string" />
  </xsd:complexType>
  
  <!-- CommandHasIcon Moniker -->
  <xsd:element name="commandHasIconMoniker" abstract="true" type="CommandHasIconMoniker" />
  <xsd:complexType name="CommandHasIconMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for CommandHasIcon instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- CommandTableHasExternElements -->
  <xsd:element name="commandTableHasExternElements" abstract="true" type="CommandTableHasExternElements" />
  <xsd:complexType name="CommandTableHasExternElements" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end ExternElement -->
      <xsd:element ref="Extern" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- CommandTableHasExternElements Moniker -->
  <xsd:element name="commandTableHasExternElementsMoniker" abstract="true" type="CommandTableHasExternElementsMoniker" />
  <xsd:complexType name="CommandTableHasExternElementsMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for CommandTableHasExternElements instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- CommandTableHasIncludeElements -->
  <xsd:element name="commandTableHasIncludeElements" abstract="true" type="CommandTableHasIncludeElements" />
  <xsd:complexType name="CommandTableHasIncludeElements" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end IncludeElement -->
      <xsd:element ref="Include" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- CommandTableHasIncludeElements Moniker -->
  <xsd:element name="commandTableHasIncludeElementsMoniker" abstract="true" type="CommandTableHasIncludeElementsMoniker" />
  <xsd:complexType name="CommandTableHasIncludeElementsMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for CommandTableHasIncludeElements instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- CommandWithIconHasStrings -->
  <xsd:element name="commandWithIconHasStrings" abstract="true" type="CommandWithIconHasStrings" />
  <xsd:complexType name="CommandWithIconHasStrings" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end StringDef -->
      <xsd:element ref="Strings" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- CommandWithIconHasStrings Moniker -->
  <xsd:element name="commandWithIconHasStringsMoniker" abstract="true" type="CommandWithIconHasStringsMoniker" />
  <xsd:complexType name="CommandWithIconHasStringsMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for CommandWithIconHasStrings instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- CommandsHasExternCommandAliases -->
  <xsd:element name="commandsHasExternCommandAliases" abstract="true" type="CommandsHasExternCommandAliases" />
  <xsd:complexType name="CommandsHasExternCommandAliases" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end ExternCommand -->
      <xsd:element ref="externCommand" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- CommandsHasExternCommandAliases Moniker -->
  <xsd:element name="commandsHasExternCommandAliasesMoniker" abstract="true" type="CommandsHasExternCommandAliasesMoniker" />
  <xsd:complexType name="CommandsHasExternCommandAliasesMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for CommandsHasExternCommandAliases instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- CommandHasKeyBinding -->
  <xsd:element name="commandHasKeyBinding" abstract="true" type="CommandHasKeyBinding" />
  <xsd:complexType name="CommandHasKeyBinding" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end KeyBindingElement -->
      <xsd:element ref="KeyBinding" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- CommandHasKeyBinding Moniker -->
  <xsd:element name="commandHasKeyBindingMoniker" abstract="true" type="CommandHasKeyBindingMoniker" />
  <xsd:complexType name="CommandHasKeyBindingMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for CommandHasKeyBinding instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- CommandHasDefineElements -->
  <xsd:element name="commandHasDefineElements" abstract="true" type="CommandHasDefineElements" />
  <xsd:complexType name="CommandHasDefineElements" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end DefineElement -->
      <xsd:element ref="Define" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- CommandHasDefineElements Moniker -->
  <xsd:element name="commandHasDefineElementsMoniker" abstract="true" type="CommandHasDefineElementsMoniker" />
  <xsd:complexType name="CommandHasDefineElementsMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for CommandHasDefineElements instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- CommandTableHasUsedCommands -->
  <xsd:element name="commandTableHasUsedCommands" abstract="true" type="CommandTableHasUsedCommands" />
  <xsd:complexType name="CommandTableHasUsedCommands" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end UsedCommandElement -->
      <xsd:element ref="usedCommand" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- CommandTableHasUsedCommands Moniker -->
  <xsd:element name="commandTableHasUsedCommandsMoniker" abstract="true" type="CommandTableHasUsedCommandsMoniker" />
  <xsd:complexType name="CommandTableHasUsedCommandsMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for CommandTableHasUsedCommands instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- CommandTableHasSymbols -->
  <xsd:element name="commandTableHasSymbols" abstract="true" type="CommandTableHasSymbols" />
  <xsd:complexType name="CommandTableHasSymbols" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end GuidSymbol -->
      <xsd:element ref="GuidSymbol" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- CommandTableHasSymbols Moniker -->
  <xsd:element name="commandTableHasSymbolsMoniker" abstract="true" type="CommandTableHasSymbolsMoniker" />
  <xsd:complexType name="CommandTableHasSymbolsMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for CommandTableHasSymbols instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- CommandTableHasBitmaps -->
  <xsd:element name="commandTableHasBitmaps" abstract="true" type="CommandTableHasBitmaps" />
  <xsd:complexType name="CommandTableHasBitmaps" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Bitmaps -->
      <xsd:element ref="Bitmaps" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- CommandTableHasBitmaps Moniker -->
  <xsd:element name="commandTableHasBitmapsMoniker" abstract="true" type="CommandTableHasBitmapsMoniker" />
  <xsd:complexType name="CommandTableHasBitmapsMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for CommandTableHasBitmaps instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- CommandsHasCombos -->
  <xsd:element name="commandsHasCombos" abstract="true" type="CommandsHasCombos" />
  <xsd:complexType name="CommandsHasCombos" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end Combo -->
      <xsd:element ref="Combo" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- CommandsHasCombos Moniker -->
  <xsd:element name="commandsHasCombosMoniker" abstract="true" type="CommandsHasCombosMoniker" />
  <xsd:complexType name="CommandsHasCombosMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for CommandsHasCombos instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
  <!-- Enum MenuType -->
  <xsd:simpleType name="MenuType">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Menu">
        <xsd:annotation>
          <xsd:documentation>Provides a typical drop-down menu list. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="Context">
        <xsd:annotation>
          <xsd:documentation>Provides a menu that can be shown when a user right-clicks a window. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="MenuController">
        <xsd:annotation>
          <xsd:documentation>Provides a split-button drop-down menu, which is typically used in toolbars. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="ToolWindowToolbar">
        <xsd:annotation>
          <xsd:documentation>Provides a toolbar that is attached to a specific tool window, just as a Toolbar menu is attached to the IDE. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="ToolBar">
        <xsd:annotation>
          <xsd:documentation>Provides a standard toolbar that is attached to the IDE. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="MenuControllerLatched">
        <xsd:annotation>
          <xsd:documentation>Provides a split-button drop-down menu for which a command can be specified as the default selection by marking the command as latched. A latched command is a command that is marked in the menu as selected, typically by displaying a check mark. A command can be marked as latched if it has the OLECMDF_LATCHED flag set on it in an implementation of the QueryStatus method of the IOleCommandTarget interface. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
    </xsd:restriction>
  </xsd:simpleType>
  
  <!-- Enum MenuCommandFlag -->
  <xsd:simpleType name="MenuCommandFlag">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="AlwaysCreate">
        <xsd:annotation>
          <xsd:documentation>Menu is created even if it has no groups or buttons. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="DefaultDocked">
        <xsd:annotation>
          <xsd:documentation>By default, docked to the integrated development environment (IDE). This is valid only for Toolbar menu types. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="DefaultInvisible">
        <xsd:annotation>
          <xsd:documentation>By default, the command is invisible if the VSPackage that implements the command is not loaded or the QueryStatus method has not been called. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="DontCache">
        <xsd:annotation>
          <xsd:documentation>The IDE does not cache the QueryStatus method results for this command. For a menu, this tells a menu controller not to cache the text of its menu items. Use this flag when the menu contains dynamic items or items with dynamic text. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="DynamicVisibility">
        <xsd:annotation>
          <xsd:documentation>The visibility of the command can be changed through the QueryStatus method or through a context GUID that is included in the VisibilityConstraints section. This applies to commands that appear on menus, not on toolbars. Top-level toolbar items can be disabled but not hidden, when the OLECMDF_INVISIBLE flag is returned from the QueryStatus method.On a menu, this flag also indicates that it should be automatically hidden when all its members are hidden. This flag is typically assigned to submenus because top-level menus already have this behavior. This flag should be combined with the DefaultInvisible flag. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="IconAndText">
        <xsd:annotation>
          <xsd:documentation>Show an icon and text on menu and toolbar. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="NoCustomize"/>
      <xsd:enumeration value="NotInTBList">
        <xsd:annotation>
          <xsd:documentation>Does not appear in the list of available toolbars. This is valid only for Toolbar menu types. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="NoToolbarClose">
        <xsd:annotation>
          <xsd:documentation>User cannot close the toolbar. This is valid only for Toolbar menu types. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="TextChanges">
        <xsd:annotation>
          <xsd:documentation>The command or menu text can be changed at run time, typically through the QueryStatus method. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="TextIsAnchorCommand">
        <xsd:annotation>
          <xsd:documentation>For a menu controller, the text of the menu is taken from the default (anchor) command. An anchor command is the last command selected or latched. If this flag is not set, the menu controller uses its own MenuText field. However, clicking the menu controller still enables the last selected command from that controller. This flag should be combined with the TextChanges flag. This flag applies only to menus of type MenuController or MenuControllerLatched. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
    </xsd:restriction>
  </xsd:simpleType>
  
  <!-- Enum KeyModifier -->
  <xsd:simpleType name="KeyModifier">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="CTRL"/>
      <xsd:enumeration value="ALT"/>
      <xsd:enumeration value="SHIFT"/>
      <xsd:enumeration value="None"/>
    </xsd:restriction>
  </xsd:simpleType>
  
  <!-- Enum ButtonType -->
  <xsd:simpleType name="ButtonType">
    <xsd:annotation>
      <xsd:documentation>An enumerated value that specifies the kind of button</xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Button">
        <xsd:annotation>
          <xsd:documentation>A standard command that appears on toolbars (typically as an iconic button), menus, and context menus. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="MenuButton">
        <xsd:annotation>
          <xsd:documentation>A menu item that does not execute a command, but produces another menu.</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="SplitDropDown">
        <xsd:annotation>
          <xsd:documentation>Controls, such as the Undo and Redo buttons on the standard toolbar in Microsoft Word. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="Swatch">
        <xsd:annotation>
          <xsd:documentation>Controls that display color choices, such as those in a font color dialog box. Requires the implementation of some underlying interfaces. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="AppID"/>
      <xsd:enumeration value="Shared"/>
    </xsd:restriction>
  </xsd:simpleType>
  
  <!-- Enum ButtonCommandFlag -->
  <xsd:simpleType name="ButtonCommandFlag">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="AllowParams">
        <xsd:annotation>
          <xsd:documentation>Indicates that users can enter command parameters in the Command window when they type the canonical name of the command. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="CommandWellOnly">
        <xsd:annotation>
          <xsd:documentation>Apply this flag if the command does not appear on the top-level menu and you want to make it available for additional shell customization, for example, binding it to a key. After the VSPackage is installed, you may customize these commands by opening the Options dialog box from the Tools menu and then editing the command placement under the Keyboard Environment category. This flag does not affect placement on shortcut menus, toolbars, menu controllers, or submenus. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="DefaultDisabled">
        <xsd:annotation>
          <xsd:documentation>By default, the command is disabled if the VSPackage that implements the command is not loaded or the QueryStatus method has not been called. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="DefaultInvisible">
        <xsd:annotation>
          <xsd:documentation>By default, the command is invisible if the VSPackage that implements the command is not loaded or the QueryStatus method has not been called. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="DontCache">
        <xsd:annotation>
          <xsd:documentation>The IDE does not cache the QueryStatus method results for this command. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="DynamicItemStart">
        <xsd:annotation>
          <xsd:documentation>Indicates the beginning of a dynamic list. This enables the environment to build a list by successively calling the QueryStatus method on list items until the OLECMDERR_E_UNSUPPORTED flag is returned. This works well for items such as most recently used (MRU) lists and window lists. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="DynamicVisibility">
        <xsd:annotation>
          <xsd:documentation>The visibility of the command can be changed through the QueryStatus method or through a context GUID that is included in the VisibilityConstraints section. This applies to commands that appear on menus, not on toolbars. Top-level toolbar items can be disabled but not hidden, when the OLECMDF_INVISIBLE flag is returned from the QueryStatus method.On a menu, this flag also indicates that it should be automatically hidden when all its members are hidden. This flag is typically assigned to submenus because top-level menus already have this behavior. This flag should be combined with the DefaultInvisible flag. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="FixMenuController">
        <xsd:annotation>
          <xsd:documentation>If this command is positioned on a menu controller, the command is always the default, that is, the command is selected whenever the menu controller button itself is selected. If the menu controller has the TextIsAnchorCommand flag set, then the menu controller also takes its text from the command that has the FixMenuController flag. There should be only one command on a menu controller that is marked with the FixMenuController flag. If there is more than one command so marked, the last command in the menu becomes the default command. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="IconAndText">
        <xsd:annotation>
          <xsd:documentation>Show an icon and text on menu and toolbar. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="NoButtonCustomize">
        <xsd:annotation>
          <xsd:documentation>Description for Do not let the user customize this button. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="NoCustomize"/>
      <xsd:enumeration value="NoKeyCustomize">
        <xsd:annotation>
          <xsd:documentation>Do not enable keyboard customization. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="NoShowOnMenuController">
        <xsd:annotation>
          <xsd:documentation>If this command is positioned on a menu controller, the command does not appear in the drop-down list. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="Pict">
        <xsd:annotation>
          <xsd:documentation>Show only an icon on a toolbar, but only text on a menu. If no icon is specified, shows a selectable blank space on a toolbar. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="PostExec">
        <xsd:annotation>
          <xsd:documentation>Makes the command non-blocking. The IDE defers execution until all pre-processing queries are completed. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="ProfferedCmd"/>
      <xsd:enumeration value="RouteToDocs">
        <xsd:annotation>
          <xsd:documentation>The command is routed to the active document. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="TextCascadeUseBtn"/>
      <xsd:enumeration value="TextChanges">
        <xsd:annotation>
          <xsd:documentation>The command or menu text can be changed at run time, typically through the QueryStatus method. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="TextChangesButton"/>
      <xsd:enumeration value="TextContextUseButton"/>
      <xsd:enumeration value="TextMenuCtrlUseMenu">
        <xsd:annotation>
          <xsd:documentation>Use the MenuText field on menu controllers. The default is the ButtonText field.</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="TextMenuUseButton">
        <xsd:annotation>
          <xsd:documentation>Use the ButtonText field for menus. The default is the MenuText field if it is specified. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="TextOnly">
        <xsd:annotation>
          <xsd:documentation>Show only text on a toolbar or a menu but no icon even if the icon is specified. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
    </xsd:restriction>
  </xsd:simpleType>
  
  <!-- Enum ComboCommandFlag -->
  <xsd:simpleType name="ComboCommandFlag">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="CaseSensitive">
        <xsd:annotation>
          <xsd:documentation>User entries are case-sensitive. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="CommandWellOnly">
        <xsd:annotation>
          <xsd:documentation>Apply this flag if the command does not appear on the top-level menu and you want to make it available for additional shell customization, for example, binding it to a key. After the VSPackage is installed, you may customize these commands by opening the Options dialog box from the Tools menu and then editing the command placement under the Keyboard Environment category. This flag does not affect placement on shortcut menus, toolbars, menu controllers, or submenus. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="DefaultDisabled">
        <xsd:annotation>
          <xsd:documentation>By default, the command is disabled if the VSPackage that implements the command is not loaded or the QueryStatus method has not been called. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="DefaultInvisible">
        <xsd:annotation>
          <xsd:documentation>By default, the command is invisible if the VSPackage that implements the command is not loaded or the QueryStatus method has not been called. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="DynamicVisibility">
        <xsd:annotation>
          <xsd:documentation>The visibility of the command can be changed through the QueryStatus method or through a context GUID that is included in the VisibilityConstraints section. This applies to commands that appear on menus, not on toolbars. Top-level toolbar items can be disabled but not hidden, when the OLECMDF_INVISIBLE flag is returned from the QueryStatus method.On a menu, this flag also indicates that it should be automatically hidden when all its members are hidden. This flag is typically assigned to submenus because top-level menus already have this behavior. This flag should be combined with the DefaultInvisible flag. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="FilterKeys">
        <xsd:annotation>
          <xsd:documentation>See the Filtering Keys topic under Combo Element. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="IconAndText">
        <xsd:annotation>
          <xsd:documentation>Show an icon and text on menu and toolbar. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="NoAutoComplete">
        <xsd:annotation>
          <xsd:documentation>Auto-complete feature is disabled. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="NoButtonCustomize">
        <xsd:annotation>
          <xsd:documentation>Do not let the user customize this button. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="NoCustomize"/>
      <xsd:enumeration value="NoKeyCustomize">
        <xsd:annotation>
          <xsd:documentation>Do not enable keyboard customization. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="StretchHorizontally">
        <xsd:annotation>
          <xsd:documentation>When this flag is set, the width becomes the minimum width for the combo box, and if there is room on the toolbar, the combo box stretches to fill available space. This occurs only if the toolbar is horizontally docked, and only one combo box on the toolbar can use the flag (the flag is ignored on all except the last combo box). </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
    </xsd:restriction>
  </xsd:simpleType>
  
  <!-- Enum ComboType -->
  <xsd:simpleType name="ComboType">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="DropDownCombo">
        <xsd:annotation>
          <xsd:documentation>The VSPackage is responsible for filling in the contents for this combo box. The user cannot type anything in the text box of this drop-down.</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="DynamicCombo">
        <xsd:annotation>
          <xsd:documentation>The VSPackage is responsible for filling in the contents of this combo box. The user can edit this combo and also select items in it. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="IndexCombo">
        <xsd:annotation>
          <xsd:documentation>The same as DynamicCombo except that it raises the index of the item rather than its text. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="MRUCombo">
        <xsd:annotation>
          <xsd:documentation>Filled by the integrated development environment (IDE) on behalf of the VSPackage. The user can edit in this combo box. The IDE remembers up to the last 16 entries per combo box. When the user selects something in the combo box, or enters something new, the IDE notifies the appropriate VSPackage. </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
    </xsd:restriction>
  </xsd:simpleType>
  
</xsd:schema>

